package com.ruoyi.project.jiaowu.plan.mapper;

import com.ruoyi.project.jiaowu.plan.domain.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 【请填写功能名称】Mapper接口
 * 
 * @author ruoyi
 * @date 2019-10-23
 */
public interface TbPlanMainMapper 
{
    /**
     * 查询【请填写功能名称】
     * 
     * @param id 【请填写功能名称】ID
     * @return 【请填写功能名称】
     */
    public TbPlanMain selectTbPlanMainById(Long id);

    /**
     * 查询【请填写功能名称】列表
     * 
     * @param tbPlanMain 【请填写功能名称】
     * @return 【请填写功能名称】集合
     */
    public List<TbPlanMain> selectTbPlanMainList(TbPlanMain tbPlanMain);

    /**
     * 新增【请填写功能名称】
     * 
     * @param tbPlanMain 【请填写功能名称】
     * @return 结果
     */
    public int insertTbPlanMain(TbPlanMain tbPlanMain);

    /**
     * 修改【请填写功能名称】
     * 
     * @param tbPlanMain 【请填写功能名称】
     * @return 结果
     */
    public int updateTbPlanMain(TbPlanMain tbPlanMain);

    /**
     * 删除【请填写功能名称】
     * 
     * @param id 【请填写功能名称】ID
     * @return 结果
     */
    public int deleteTbPlanMainById(Long id);

    /**
     * 批量删除【请填写功能名称】
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteTbPlanMainByIds(String[] ids);

    List<TbPlabAddListDto> selectAddPlanList(@Param("majorId") Long majorId);

    Long insertPlan(PlanParam planParam);

    void insertTbPlanMainList(@Param("tbPlanMain") List<AddPlanListParam> tbPlanMain);


    List<EditTbPlanMain> selectEditPlanList(@Param("majorId") Long majorId);
    List<String> getAllCourseId(int planId);

    /**
     * 删除tb_plan_main表中plan数据
     */
    int deletePlan(Long planId);
    /**
     * 删除m_major_plan表中对应的课程信息
     */
    int deleteCourse(Long planId);

    /**
     * 根据planId删除中间表所选的课程
     * @return
     */
    int deletePlanCourse(String[] ids);

    EditTbPlanMain selectEditplan(Map<String,Object> map);


    /**
     * 发布培养计划
     */
    boolean fabu(Integer id);

    /**
     * 取消发布培养计划
     */
    boolean quxiaoFabu(Integer id);
}
